package cate.game.fight.msg;


import cate.common.util.GameResult;
import cate.game.GameBody;
import cate.game.client.ClientContext;
import cate.game.client.msg.ClientMsg;
import cate.game.client.msg.MsgConfig;
import cate.game.client.msg.MsgInput;
import cate.game.client.msg.id.MsgIdBFight;
import easy.java.dev.note.NoteField;

@ClientMsg(title = "单个英雄一键下阵 の 请求")
public class HeroBatchOffReq implements MsgInput {

    @NoteField("英雄uid")
    public String heroUid;

    @Override
    public void execute(GameBody game, ClientContext cc) {
//        HeroBatchOffResp resp = new HeroBatchOffResp();
//        GameResult<Void> r = settle(cc.getRole(), resp);
//
//        if (!resp.funcIds.isEmpty()) {
//            cc.getRole().sendNow(resp);
//        }
//        if (r.ok()) {
//            game.notice.message(cc.getRole(), "已解除所有布阵");
//        } else {
//            game.notice.message(cc.getRole(), r);
//        }
//        //上阵锁通知
//        Hero hero = cc.getRole().getBag().hero.getItem(heroUid);
//        if (hero != null) {
//            game.fight.position.handleSingleHerolock(cc.getRole(), hero,-1);
//        }
//        //更新战力
//        if (resp.funcIds.contains(GDFunc.ADVENTURE)) {
//            cc.getRole().getBase().updatePower();
//        }
        GameResult<Void> r = game.fight.position.batchOff(cc.getRole(), heroUid);
        if (r.ok()) {
            game.notice.message(cc.getRole(), "已解除所有布阵");
        } else {
            game.notice.message(cc.getRole(), r);
        }
    }

//    private GameResult<Void> settle(Role role, HeroBatchOffResp resp) {
//        GameResult<Void> r = new GameResult<>();
//        resp.heroUid = heroUid;
//        for (FuncPosition value : role.getFight().funcPositions.values()) {
//            for (Position position : value.positions) {
//                FuncPositionRow row = role.getGame().table.position.funcPosition.findRow(value.funcId, position.posNum);
//                if (row != null && row.preset && position.containHero(heroUid)) {
//                    if (position.grids.size() == 1) {
//                        return r.fail(904056, "至少上阵一个食灵", new NoticeParam(NoticeParam.NoticeType.TRANSLATE_STRING, row.nameYID));
//                    } else {
//                        position.grids.removeIf(a -> StringUtils.equals(heroUid, a.uid));
//                        resp.funcIds.add(value.funcId);
//                    }
//                }
//            }
//        }
//        return r.success();
//    }



    @Override
    public MsgConfig conf() {
        return MsgIdBFight.HERO_BATCH_OFF_REQ;
    }

}
